<?php

/*
 <!--/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Autor: Jordan CamposDelgado
Fecha: 20/07/2012
Descripción: Controlador para los metodos generico utilizados en toda las aplicaciones y requeriminetos.
Bitacora de modificaciones:
    <
    Autor: 
    Fecha: 
    Descripción: 
    >
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////-->
 */

//Con el error reporting no se muestra el warning comunmente presentado al iniciar session nuevamente
error_reporting(0); 
// Se retoma la session.
session_start();
// Se establecen cookies de session para http o https
setcookie(session_name(), session_id(), NULL, NULL, NULL, 0);
setcookie(session_name(), session_id(), NULL, NULL, NULL, 1);

switch ($_GET["accion"]) {
    case "cargarCompanias":
        cargarCompanias();
        break;
}


function mensajeConfirmacionData($bandera) 
    {                
        try 
        {
            if($bandera=='Cambio')
            {
                ?>
                <script type="text/javascript">
                $().message("Se realiz\u00F3 el cambio de contrase\u00F1a correctamente.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='DatosInvalidos'){
                 ?>
                <script type="text/javascript">
                $().message("Se ingresaron datos incorrectos, favor validar la informaci\u00F3n.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='LogOut'){
                 ?>
                <script type="text/javascript">
                $().message("Ha salido del sistema correctamente.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            
            elseif($bandera=='contrasennaInvalida'){
                 ?>
                <script type="text/javascript">
                $().message("Su usuario o contrase\u00F1a son invalidos, favor verifique los datos ingresados.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='passDistinto'){
                 ?>
                <script type="text/javascript">
                $().message("La contrase\u00F1as no concuerdan, vuelva a digitarlas por favor.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='NoLog'){
                 ?>
                <script type="text/javascript">
                $().message("El usuario no se encuentra logeado, favor ingresar sus credenciales.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='UsuarioDuplicado'){
                 ?>
                <script type="text/javascript">
                $().message("El usuario ya se encuentra en la base de datos.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif($bandera=='Agrega'){
                 ?>
                <script type="text/javascript">
                $().message("El usuario se agrego correctamente.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif ($bandera=='SinPermisos') {
                ?>
                <script type="text/javascript">
                $().message("Su usuario no posee permisos para esta acci&oacute;n.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            elseif ($bandera=='contrasennaIgual') {
                ?>
                <script type="text/javascript">
                $().message("La contrase\u00F1a no puede ser igual a la actual, digite una contrase\u00F1a distinta.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
            }
            
            else {
                ?>
                <script type="text/javascript">
                $().message("Hubo algun error en la transacci\u00F3n, intente mas tarde.");
                e.preventDefault();
                $().message($("#message").val());
                </script>
                <?php
                
            }
            
                   
        }
        catch (Exception $e) 
        {
        echo 'Excepción capturada: ',  $e->getMessage(), "\n";
        }
    }

function fechaAplicacionToVista($fechaAplicacion){
    try
    {
        $fechaModificada=date_parse($fechaAplicacion);
        if (strlen($fechaModificada['day'])==1){$dia="0".$fechaModificada['day'];}else{$dia=$fechaModificada['day'];}
        if (strlen($fechaModificada['month'])==1){$mes="0".$fechaModificada['month'];}else{$mes=$fechaModificada['month'];}
        $anno = $fechaModificada['year'];
        $fechaUsuario=$mes.'/'.$dia.'/'.$anno;
        return $fechaUsuario;
    }
    catch (Exception $e)
    {
        echo 'Excepción capturada: ',  $e->getMessage(), "\n";

    }
    
}

function fechaVistaToAplicacion($fechaVista,$default){
    //require_once('FirePHPCore/FirePHP.class.php');
    //$firephp = FirePHP::getInstance(true);
    
    try
    {
       if(empty($fechaVista)){
           $fechaVista=$default;
       }
       
        $arr =  explode('/', $fechaVista);        
        $dia = $arr[0];
        $mes = $arr[1];
        $anno = $arr[2];
       
        
        //if (strlen($fechaModificada['day'])==1){$dia="0".$fechaModificada['day'];}else{$dia=$fechaModificada['day'];}
        //if (strlen($fechaModificada['month'])==1){$mes="0".$fechaModificada['month'];}else{$mes=$fechaModificada['month'];}
       
        $fechaAplicacion=$anno.$mes.$dia;
        return $fechaAplicacion;
    }
    catch (Exception $e)
    {
        echo 'Excepción capturada: ',  $e->getMessage(), "\n";

    }
    
}

function fechaVistaToReporte($fechaVista){
    //require_once('FirePHPCore/FirePHP.class.php');
    //$firephp = FirePHP::getInstance(true);
    
    try
    {
       
        $arr =  explode('/', $fechaVista);        
        $dia = $arr[0];
        $mes = $arr[1];
        $anno = $arr[2];
        
        //if (strlen($fechaModificada['day'])==1){$dia="0".$fechaModificada['day'];}else{$dia=$fechaModificada['day'];}
        //if (strlen($fechaModificada['month'])==1){$mes="0".$fechaModificada['month'];}else{$mes=$fechaModificada['month'];}
       
        $fechaReporte=$mes.'/'.$dia.'/'.$anno;
        return $fechaReporte;
    }
    catch (Exception $e)
    {
        echo 'Excepción capturada: ',  $e->getMessage(), "\n";

    }
    
}

function identificacionLogin(){
    
    require '../modelos/dataModelo.php';
    try
    {
        require_once('FirePHPCore/FirePHP.class.php');
        $firephp = FirePHP::getInstance(true);
        $firephp->log($_GET['usuarioLogin'],'$userLogin');
        
        $userLogin=$_GET['usuarioLogin'];
        $pass = $_GET['password'];
        $action = $_GET['accion'];
        $items = validaUsuarioAxPlus($userLogin,$pass);
        
        if(count($items)>0){
            foreach($items as $item){ 
                $_SESSION["s_username"] = $item['Username'];
                $_SESSION["s_nombre"] = $item['Nombre'];
                $_SESSION["s_apellidos"] = $item['Apellidos'];
                $_SESSION["s_rol"] = $item['Rol'];
                $_SESSION["autenticado"]= "123qweasdzxcpoiñlkmnb321";
                $_SESSION["ultimoAcceso"] = date('Y-n-j H:i:s');
                $_SESSION["s_idDynamicsAX"] = buscaIdentificacionDynamicsAX();
                
				// Jordan Campos D 19/11/2012, se agrega la Compannia
                $_SESSION["s_userCompany"] = buscaCompaniaUsuario();
               
               $firephp->log($_SESSION["s_userCompany"],'$_SESSION["s_userCompany"]');
               $firephp->log($_SESSION["s_username"],'$_SESSION["s_username"]');
               $firephp->log($_SESSION["s_idDynamicsAX"],'$_SESSION["s_idDynamicsAX"]');
               $firephp->log($_SESSION["s_rol"],'$_SESSION["s_rol"]');
               $firephp->log($_SESSION["autenticado"],'$_SESSION["autenticado"]');
               $firephp->log($_SESSION['ultimoAcceso'],'$_SESSION["ultimoAcceso"]');
            }
        }
        else
            $mensaje='La informaci&oacute;n es incorrecta.';
        
       if($action!='agregaUsuario'){
           require '../vistas/menuVertical.php';
       }
    }
    catch (Exception $e)
    {
        //echo 'Excepción capturada: ',  $e->getMessage(), "\n";
        echo "Su usuario no posee privilegios para ingresar";

    }
}

function identificacionLoginActiveDirectory(){
    //require 'GuiasEnvio/agregarEmbalaje.php';
    
    try
    {
        require_once('FirePHPCore/FirePHP.class.php');
        $firephp = FirePHP::getInstance(true);
        $firephp->log($_GET['usuarioLogin'],'$userLogin');
        $userLogin=$_GET['usuarioLogin'];
        $ldaprdn = $userLogin.'@grupo.numar.net';
        $ldappass = $_GET['password'];
        $ds = 'ldap://192.168.100.3';
        $dn = 'dc=NUMARDOM,dc=net';
        $puertoldap = 3269;
        $ldapconn = ldap_connect($ds,$puertoldap)
        or die("ERROR: No se pudo conectar con el Servidor LDAP.");


        if ($ldapconn)
        {
            ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);
            ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);
            //$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
            if (ldap_bind($ldapconn, $ldaprdn, $ldappass))
            {
                //echo "LDAP bind realizado correctamente...";
                 require '../vistas/menuVertical.php';
            }
            else
            {echo "Su usuario no posee privilegios para ingresar";}
        }
    }    
    catch (Exception $e)
    {
        //echo 'Excepción capturada: ',  $e->getMessage(), "\n";
        echo "Su usuario no posee privilegios para ingresar";

    }
}

function logOut(){
// Borramos toda la sesion
    
    // Destruir todas las variables de sesión.
    $_SESSION = array();

    // Si se desea destruir la sesión completamente, borre también la cookie de sesión.
    // Nota: ¡Esto destruirá la sesión, y no la información de la sesión!
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }

    // Finalmente, destruir la sesión.
    session_start();
    session_unset();
    session_destroy();
    $bandera = 'LogOut';
    ?>
       <script type="text/javascript" language="Javascript">
            parent.location.href='../index.php';
       </script>
    <?php            
    require '../vistas/portada.php';         
    mensajeConfirmacionData($bandera);
     
}

function cargarCompanias() {
    
    require_once '../modelos/dataModelo.php';
     
    $items = buscarTodosLasCompanias();
    foreach ($items as $item) {
        $idCompania = $item['Id'];
        $nombre = $item['Name'];
        echo "<option value=" . $idCompania . ">" . $nombre . "</option>";
    }
}

function validarPermisos($metodo) {
    require_once '../modelos/dataModelo.php';
    //$id = buscarPermiso($_SESSION["s_username"],$metodo);
    $id = buscarPermiso($metodo,$_SESSION["s_username"]);
    return $id;
}

function cambioPassword() {
     require_once '../modelos/dataModelo.php';
     try {
        $bandera = 'DatosInvalidos';
        $userLogin=$_POST['txtUsername'];
        $pass = md5($_POST['txtPasswordActual']);
        $passNuevo = md5($_POST['txtPasswordNuevo']);
        $passConfirmado = md5($_POST['txtPasswordConfirmado']);
        
         
        $items = validaUsuarioAxPlus($userLogin,$pass);
        if(count($items)>0 and ($passNuevo==$passConfirmado) and ($pass!=$passConfirmado)){
             
             actualizaPassword($userLogin,$passNuevo);
             $bandera = 'Cambio';
        }
        else{
            if ($passNuevo!=$passConfirmado) {
                    $bandera = 'passDistinto';
                }
            else
            {
                if($pass==$passConfirmado){
                    $bandera = 'contrasennaIgual';
                }
                else{
                 $bandera = 'contrasennaInvalida';
                }
            }   
                
        }
            
        //require '../vistas/Seguridad/cambioPassword.php'; 
        require '../vistas/portada.php'; 
        
        
        mensajeConfirmacionData($bandera);
        
    } catch (Exception $exc) {
        echo "No es posible en este momento el cambio de contrase&ntilde;a, verifique mas tarde o contacte al departamento de Tecnolog&iacute;as.";
   }
   
    
}

function validaUsuarioLogeado(){
     require_once('FirePHPCore/FirePHP.class.php');
        
    if($_SESSION["s_username"]!=""){
       
        require '../vistas/Seguridad/agregaUsuario.php';
        
    }
    else{
        $bandera="NoLog";
        require '../vistas/portada.php';
        mensajeConfirmacionData($bandera);        
        
    }                    
}

function agregarUsuarios(){
        //require_once '../controladores/dataControlador.php';
         require_once '../modelos/dataModelo.php';
         require_once('FirePHPCore/FirePHP.class.php');
        $firephp = FirePHP::getInstance(true);
        $firephp->log('SI','agregarUsuarios');
        $firephp->log($_POST['txtPasswordNuevo'],'password');
    
        
        $bandera="";
        try 
        {   
            if(validadorUsuarioAdministradoGeneral())
            {
                if ($_POST['hddAccion']!='incoincidenca') {

                    $firephp->log('SI','incoincidenca');

                if(encontrarUsuarioDuplicado($_POST['txtUsername'])==false)
                {
                    $firephp->log('SI','encontrarUsuarioDuplicado');
                        agregarUsuario($_POST['txtUsername'],md5($_POST['txtPasswordNuevo']),$_POST['txtNombre'],$_POST['txtApellidos']);
                        agregarAsignaRol($_POST['txtUsername'],$_POST['cmbRol']);
                        $bandera='Agrega';                    

                }
                else
                {
                    $bandera='UsuarioDuplicado';
                }         
            }
            else {
                $bandera='passDistinto';

                }

            }
            else
            {
                $bandera = 'SinPermisos';

            }    
         require 'Seguridad/agregaUsuario.php';
         mensajeConfirmacionData($bandera); 
        }
        catch (Exception $e) 
        {
            echo 'Excepción capturada: ',  $e->getMessage(), "\n";
        }        
    }
    
    
    function dirigirCambioContrasenna(){
        require 'Seguridad/cambioPassword.php';
    }
    
    function buscaIdentificacionDynamicsAX() {
    
    require_once '../modelos/dataModelo.php';
	 $idDynamicsAX ='';
    $items = buscarIdDynamicsAX();
        foreach ($items as $item) {
            $idDynamicsAX = $item['ID'];
            

        }
    return $idDynamicsAX;
    }
    
    function buscaCompaniaUsuario() {
    
    require_once '../modelos/dataModelo.php';
	$idCompania ='';
    $items = buscarIdDynamicsAX();
        foreach ($items as $item) {
            $idCompania = $item['ID'];
            

        }
    return $idCompania;
    }
                
?>
